// https://leetcode-cn.com/problems/search-in-rotated-sorted-array/
// 33. 搜索旋转排序数组
// 整数数组 nums 按升序排列，数组中的值互不相同，给你旋转后的数组 nums 和一个
// 整数 target，如果 nums 中存在这个目标值 target，则返回它的下标，否则返回 -1
function search(nums: number[], target: number): number {
    if (nums.length === 0) return -1;
    if (nums.length === 1) return nums[0] === target ? 0 : -1;
    let l = 0,
        r = nums.length - 1;
    while (l <= r) {
        const mid = (l + r) >> 1;
        if (nums[mid] === target) return mid;
        if (nums[0] <= nums[mid]) {
            if (nums[0] <= target && target <= nums[mid]) {
                r = mid - 1;
            } else {
                l = mid + 1;
            }
        } else {
            if (nums[mid] <= target && target <= nums[r]) {
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }
    }
    return -1;
}
